﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Split
{
    static class Classer
    {
        public static void Split(ref List<Class> CodeClass, List<Functions> CodeFunctions)//関数をクラスに所属させる
        {


            foreach (Functions ff in CodeFunctions)//関数リストから取り出し
            {

                Class c = new Class();
                c.Name = ff.Class;
                Predicate<Class> cc = new Predicate<Class>(delegate(Class ccc) { return ccc.Name == c.Name; });

                //Console.WriteLine(CodeClass.FindIndex(cc).ToString());


                if (CodeClass.FindIndex(cc) == -1)//見つからなかったら
                {
                    throw new ClassNotFoundException("存在しないクラスです。");
                }

                
                int Index = CodeClass.FindIndex(cc);
                if (ff.Name == CodeClass[Index].Name)//コンストラクターなら
                {
                    CodeClass[Index].Constructor.Add(ff);//リストに追加
                }

                else if (ff.Name == "~"+CodeClass[Index].Name)//デストラクターなら
                {
                    ff.Name.Replace("~", "");//~を削除してから
                    CodeClass[Index].Destructor.Add(ff);//リストに追加
                }

                else//通常の関数なら
                {
                    CodeClass[Index].Functions.Add(ff);
                }
                
            }
        }
    }
}